package com.ghsc.yigou.live.app

import android.app.ActivityManager
import android.app.Application
import android.content.Context
import android.os.Build
import android.os.Process
import android.text.TextUtils
import android.webkit.WebView
import com.aliyunsdk.queen.menu.download.BeautyMenuMaterial
import com.blankj.utilcode.util.Utils
import com.cn.appcore.config.AppConfig
import com.cn.appcore.ext.getCompatColor
import com.cn.appcore.ext.loge
import com.ghsc.yigou.live.R
import com.ghsc.yigou.live.config.AUIInteractionLiveManager
import com.ghsc.yigou.live.config.UserManager
import com.scwang.smart.refresh.footer.ClassicsFooter
import com.scwang.smart.refresh.header.ClassicsHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.scwang.smart.refresh.layout.constant.SpinnerStyle
import com.tencent.mmkv.MMKV
import com.zzhoujay.richtext.RichText
import kotlin.properties.Delegates


/**
 * 类名：App
 * 创建时间 2023/4/6 20:59
 * 创建人 @author： xiaolin
 * 描述 ：Todo...
 */
class App: Application() {


    var isInit=false


    override fun onCreate() {
        super.onCreate()
        initApp()
    }
    // SDK预初始化函数

    private fun initApp() {
        instance = this
        AppConfig.init(this)
//        // 设置全局异常处理器
//        Thread.setDefaultUncaughtExceptionHandler( GlobalExceptionHandler(this))
        //工具类初始化
        Utils.init(this)
        initSmartRefresh() //下拉刷新。上拉加载。
        //初始化存储
        MMKV.initialize(this)
        RichText.initCacheDir(this)
        RichText.debugMode = true
        initWebView()
        init()

    }
    private fun getProcessName(context: Context?): String? {
        if (context == null) return null
        val manager = context.getSystemService(ACTIVITY_SERVICE) as ActivityManager
        for (processInfo in manager.runningAppProcesses) {
            if (processInfo.pid == Process.myPid()) {
                return processInfo.processName
            }
        }
        return null
    }
    private fun initWebView() {
        // WebView多进程处理
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            try {
                val processName = getProcessName(this) ?: getProcessName()
                loge("processName="+processName)
                val packageName = this.packageName
                if (packageName != processName) {
                    WebView.setDataDirectorySuffix(processName)
                }
            } catch (e: java.lang.Exception) {
                e.printStackTrace()
            }
        }
    }
    private fun initSmartRefresh() {
        SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, _ -> //全局设置主题颜色
            //                layout.setPrimaryColorsId(R.color.main_color, android.R.color.white);
            //                return new BezierCircleHeader(context);
            val header = ClassicsHeader(context)
            header.setAccentColor(
                getCompatColor(R.color.black)
            )

            header.setTextSizeTitle(10f)
            header.setTextSizeTime(10f)
            header.setDrawableSize(12f) //同时设置箭头和图片的大小（dp单位）
            header.setDrawableArrowSize(12f) //设置箭头的大小（dp单位）
            header.setDrawableProgressSize(12f) //设置图片的大小（dp单位）
            header.setArrowResource(R.drawable.icon_refresh)
            header
        }
        SmartRefreshLayout.setDefaultRefreshFooterCreator { context, layout -> //取消内容不满一页时开启上拉加载功能
            layout.setEnableLoadMoreWhenContentNotFull(false)
            layout.setEnableAutoLoadMore(true)  //是否启用列表惯性滑动到底部时自动加载更多
            //                layout.finishLoadMoreWithNoMoreData();//完成加载并标记没有更多数据 1.0.4
            //指定为经典Footer，默认是 BallPulseFooter
            val footer = ClassicsFooter(context)
            footer.setAccentColor(getCompatColor(R.color.black))
            footer.setTextSizeTitle(12f)
            footer.setDrawableSize(14f) //同时设置箭头和图片的大小（dp单位）
            footer.setDrawableArrowSize(14f) //设置箭头的大小（dp单位）
            footer.setDrawableProgressSize(14f) //设置图片的大小（dp单位）
            footer.spinnerStyle = SpinnerStyle.Translate
            footer
        }
    }
    companion object {
        @JvmStatic
        var instance: Context by Delegates.notNull()
            private set
        fun init(){
//            initZhongJian()
//            initYunXinIM()
//            initAliVideo()
                initAliVideo()

        }


        fun initAliVideo() {
            AUIInteractionLiveManager().setup()
            BeautyMenuMaterial.getInstance().prepare(instance)//提前初始化Beauty ，防止部分贴纸失效
        }
    }
}